🇬🇧 Read this in English.
Genera configuraciones de sshd_config y fail2ban (jail.local) hardenizadas, auditadas y listas para producción en segundos.
Según el informe SSH Hardening Guidelines de CIS, más del 70% de las brechas de seguridad en servidores Linux involucran configuraciones SSH débiles o por defecto. CVEs como CVE-2018-15473 (enumeración de usuarios) o CVE-2020-15778 (ejecución remota por SCP inseguro) son explotables cuando no se aplican directivas de endurecimiento. SSHForge automatiza la generación de configuraciones alineadas con CIS Benchmark SSH (sección 5) y NIST SP 800-123, reduciendo el riesgo de exposición.
+---------+ +--------------+ +--------------+ +----------+ +----------+
| CLI | --> | ProfileLoader| --> | ConfigBuilder| --> | Auditor | --> | Output |
| (Click) | | (YAML) | | (Jinja2) | | (Rich) | | (Files) |
+---------+ +--------------+ +--------------+ +----------+ +----------+
- CLI: Interfaz de línea de comandos con Click.
- ProfileLoader: Carga perfiles YAML desde
profiles/. - ConfigBuilder: Fusiona perfil + argumentos CLI y renderiza plantillas Jinja2.
- Auditor: Verifica cada directiva contra umbrales del perfil y genera puntuación.
- Output: Escribe
sshd_config,jail.localyaudit_report.txt.
git clone https://github.com/javiergarridoortiz/sshforge.git
cd sshforge
pip install -r requirements.txtpython src/main.py --profile minimal --port 2222 --output ./output_minimalpython src/main.py --profile standard --user deploy --mfa totp --output ./output_standardpython src/main.py --profile strict --port 2222 --user admin --mfa totp --output ./output_strict| Opción | Descripción | Valores |
|---|---|---|
--profile |
Perfil de hardening | minimal, standard, strict |
--port |
Puerto SSH (por defecto 22) | Entero |
--user |
Usuario permitido | String |
--mfa |
Autenticación multifactor | none, totp |
--output |
Directorio de salida | Ruta |
Cada perfil define directivas SSH y fail2ban con valores y justificaciones.
- SSH:
PermitRootLogin yes,PasswordAuthentication yes,X11Forwarding yes. - fail2ban:
maxretry = 5,bantime = 600. - Uso: Entornos de desarrollo o pruebas internas.
- SSH:
PermitRootLogin no,PasswordAuthentication no,X11Forwarding no,ClientAliveInterval 300. - fail2ban:
maxretry = 3,bantime = 3600. - Uso: Servidores de producción estándar.
- SSH:
PermitRootLogin no,PasswordAuthentication no,X11Forwarding no,ClientAliveInterval 120,MaxAuthTries 2,AllowUsers(solo usuario definido),PubkeyAuthentication yes. - fail2ban:
maxretry = 2,bantime = 86400. - Uso: Entornos de alta seguridad (bancos, datos sensibles).
- CIS Benchmark for SSH (Section 5): CIS Controls
- NIST SP 800-123: Guide to General Server Security (Secciones sobre SSH)
SSHForge genera configuraciones que endurecen el acceso SSH. Antes de aplicarlas en producción, pruébalas en un entorno de pruebas. Una configuración incorrecta puede bloquear el acceso remoto. Asegúrate de tener acceso de consola o un método de recuperación.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Javier Garrido Ortiz


